home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mint110s / genmagic.c < prev    next >
C/C++ Source or Header  |  1993-08-16  |  2KB  |  75 lines

  1. #include "mint.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stddef.h>
  5.  
  6. static void usage P_((void));
  7.  
  8. static void
  9. usage()
  10. {
  11.     fprintf(stderr, "Usage: genmagic outputfile\n");
  12.     exit(2);
  13. }
  14.  
  15. /* conventions:
  16.  * C_XXX is offset of XXX in CONTEXT struct
  17.  * P_XXX is offset of XXX in PROC struct
  18.  */
  19.  
  20. struct magics {
  21.     const char *name;
  22.     long value;
  23. } magics[] = {
  24.     { "C_PTRACE", offsetof(CONTEXT, ptrace)},
  25.     { "C_SFMT", offsetof(CONTEXT, sfmt)},
  26.     { "C_INTERNAL", offsetof(CONTEXT, internal)},
  27.     { "C_SR", offsetof(CONTEXT, sr)},
  28.     { "C_PC", offsetof(CONTEXT, pc)},
  29.     { "C_FSTATE", offsetof(CONTEXT, fstate)},
  30.     { "C_FREGS", offsetof(CONTEXT, fregs)},
  31.     { "C_FCTRL", offsetof(CONTEXT, fctrl)},
  32.     { "C_USP", offsetof(CONTEXT, usp)},
  33.     { "C_SSP", offsetof(CONTEXT, ssp)},
  34.     { "C_TERM", offsetof(CONTEXT, term_vec)},
  35.     { "C_D0", offsetof(CONTEXT, regs)},
  36.     { "C_A0", offsetof(CONTEXT, regs)+32},
  37.     { "C_CRP", offsetof(CONTEXT, crp)},
  38.     { "C_TC", offsetof(CONTEXT, tc)},
  39.     { "P_CTXT0", offsetof(PROC, ctxt)},
  40.     { "P_SYSTIME", offsetof(PROC, systime)},
  41.     { "P_USRTIME", offsetof(PROC, usrtime)},
  42.     { "P_PTRACER", offsetof(PROC, ptracer)},
  43.     { "P_SYSCTXT", offsetof(PROC, ctxt)},
  44.     { "P_EXCPC", offsetof(PROC, exception_pc)},
  45.     { "P_EXCSSP", offsetof(PROC, exception_ssp)},
  46.     { "P_EXCADDR", offsetof(PROC, exception_addr)},
  47.     { "P_EXCTBL", offsetof(PROC, exception_tbl)},
  48.     { "P_EXCMMUSR", offsetof(PROC, exception_mmusr)},
  49.     { (char *)0, 0 }
  50. };
  51.  
  52. int
  53. main(argc, argv)
  54.     int argc;
  55.     char **argv;
  56. {
  57.     FILE *f;
  58.     int i;
  59.  
  60.     if (argc != 2)
  61.         usage();
  62.     f = fopen(argv[1], "w");
  63.     if (!f) {
  64.         perror(argv[1]);
  65.         exit(1);
  66.     }
  67.  
  68.     for (i = 0; magics[i].name; i++) {
  69.         fprintf(f, "%%define %s %ld\n", magics[i].name,
  70.                 magics[i].value);
  71.     }
  72.     fclose(f);
  73.     return 0;
  74. }
  75.